package com.lanou3g.code0420;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Created by dllo on 18/4/20.
 */
public class Server {
    // 并发 ECHO 服务器
    // ECHO是一种常见的小型服务器
    // 作用,将客户端发送来的数据,原封不动的
    // 在发回给客户端
    // 这样 客户端可以方便的判断服务器是否好用
    public static void main(String[] args) {
        try {
            // 创建一个socket服务器对象
            // 在创建的时候绑定端口号
            // 注意 如果你重复运行该代码
            // 会出现端口号被占用异常
            ServerSocket ss = new ServerSocket(1234);
            System.out.println("服务器已启动,等待连接");

            while (true) {
                // accept()方法是socket服务器等待
                // 客户端的接入,如果没有客户端接入
                // 则代码会在这一行一直等下去
                Socket client = ss.accept();

                // client.getRemoteSocketAddress()
                // 可以获得客户端的 ip地址 和端口号
                System.out.println("有一个服务器接入" + client.getRemoteSocketAddress());// 显示端口号

                // 为每一个客户端创建线程
                new EchoThread(client).start();
            }

//            OutputStream os = client.getOutputStream();
//            InputStream in = client.getInputStream();
//
//            PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
//            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
//
//            while (!client.isClosed()) {// 可以省略
//                // 只要客户端没有断开连接
//                String line = "";
//                while ((line = reader.readLine()) != null) {
//                    String echo = "ECHO:" + line;
//                    pw.println(echo);
//                    pw.flush();
//                }
//            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
